home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / usb / musb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.9 KB  |  99 lines

  1. /*
  2.  * This is used to for host and peripheral modes of the driver for
  3.  * Inventra (Multidrop) Highspeed Dual-Role Controllers:  (M)HDRC.
  4.  *
  5.  * Board initialization should put one of these into dev->platform_data,
  6.  * probably on some platform_device named "musb_hdrc".  It encapsulates
  7.  * key configuration differences between boards.
  8.  */
  9.  
  10. /* The USB role is defined by the connector used on the board, so long as
  11.  * standards are being followed.  (Developer boards sometimes won't.)
  12.  */
  13. enum musb_mode {
  14.     MUSB_UNDEFINED = 0,
  15.     MUSB_HOST,        /* A or Mini-A connector */
  16.     MUSB_PERIPHERAL,    /* B or Mini-B connector */
  17.     MUSB_OTG        /* Mini-AB connector */
  18. };
  19.  
  20. struct clk;
  21.  
  22. struct musb_hdrc_eps_bits {
  23.     const char    name[16];
  24.     u8        bits;
  25. };
  26.  
  27. struct musb_hdrc_config {
  28.     /* MUSB configuration-specific details */
  29.     unsigned    multipoint:1;    /* multipoint device */
  30.     unsigned    dyn_fifo:1;    /* supports dynamic fifo sizing */
  31.     unsigned    soft_con:1;    /* soft connect required */
  32.     unsigned    utm_16:1;    /* utm data witdh is 16 bits */
  33.     unsigned    big_endian:1;    /* true if CPU uses big-endian */
  34.     unsigned    mult_bulk_tx:1;    /* Tx ep required for multbulk pkts */
  35.     unsigned    mult_bulk_rx:1;    /* Rx ep required for multbulk pkts */
  36.     unsigned    high_iso_tx:1;    /* Tx ep required for HB iso */
  37.     unsigned    high_iso_rx:1;    /* Rx ep required for HD iso */
  38.     unsigned    dma:1;        /* supports DMA */
  39.     unsigned    vendor_req:1;    /* vendor registers required */
  40.  
  41.     u8        num_eps;    /* number of endpoints _with_ ep0 */
  42.     u8        dma_channels;    /* number of dma channels */
  43.     u8        dyn_fifo_size;    /* dynamic size in bytes */
  44.     u8        vendor_ctrl;    /* vendor control reg width */
  45.     u8        vendor_stat;    /* vendor status reg witdh */
  46.     u8        dma_req_chan;    /* bitmask for required dma channels */
  47.     u8        ram_bits;    /* ram address size */
  48.  
  49.     struct musb_hdrc_eps_bits *eps_bits;
  50. };
  51.  
  52. struct musb_hdrc_platform_data {
  53.     /* MUSB_HOST, MUSB_PERIPHERAL, or MUSB_OTG */
  54.     u8        mode;
  55.  
  56.     /* for clk_get() */
  57.     const char    *clock;
  58.  
  59.     /* (HOST or OTG) switch VBUS on/off */
  60.     int        (*set_vbus)(struct device *dev, int is_on);
  61.  
  62.     /* (HOST or OTG) mA/2 power supplied on (default = 8mA) */
  63.     u8        power;
  64.  
  65.     /* (PERIPHERAL) mA/2 max power consumed (default = 100mA) */
  66.     u8        min_power;
  67.  
  68.     /* (HOST or OTG) msec/2 after VBUS on till power good */
  69.     u8        potpgt;
  70.  
  71.     /* Power the device on or off */
  72.     int        (*set_power)(int state);
  73.  
  74.     /* Turn device clock on or off */
  75.     int        (*set_clock)(struct clk *clock, int is_on);
  76.  
  77.     /* MUSB configuration-specific details */
  78.     struct musb_hdrc_config    *config;
  79. };
  80.  
  81.  
  82. /* TUSB 6010 support */
  83.  
  84. #define    TUSB6010_OSCCLK_60    16667    /* psec/clk @ 60.0 MHz */
  85. #define    TUSB6010_REFCLK_24    41667    /* psec/clk @ 24.0 MHz XI */
  86. #define    TUSB6010_REFCLK_19    52083    /* psec/clk @ 19.2 MHz CLKIN */
  87.  
  88. #ifdef    CONFIG_ARCH_OMAP2
  89.  
  90. extern int __init tusb6010_setup_interface(
  91.         struct musb_hdrc_platform_data *data,
  92.         unsigned ps_refclk, unsigned waitpin,
  93.         unsigned async_cs, unsigned sync_cs,
  94.         unsigned irq, unsigned dmachan);
  95.  
  96. extern int tusb6010_platform_retime(unsigned is_refclk);
  97.  
  98. #endif    /* OMAP2 */
  99.